from matplotlib import pyplot as plt
from random import randint
import matplotlib
from matplotlib import font_manager
#todo 这样修改貌似没字体
# font = {'family': 'MicroSoft Yahei',
#         'weight': 'bold',
#         'size': '18'}
#
# matplotlib.rc('font', **font)

# my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc')
my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/ukai.ttc')
x = range(11, 31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

# y = [1,2,3]
# 设置图片大小
plt.figure(figsize=(20, 8), dpi=80)

# 绘图
plt.plot(x, y)

# 设置x轴的刻度
# _x = list(x)
# # _xtick_labels = ["hello,{}".format(i) for i in _x]
# _xtick_labels = ["10点{}分".format(i) for i in range(60)]
# _xtick_labels += ["11点{}分".format(i) for i in range(60)]
_xtick_labels = ["{}岁".format(i) for i in x]
# # [::3]步长不同 变稀疏或者紧凑            rotation旋转度数
plt.xticks(list(x), _xtick_labels, rotation=-90,fontproperties=my_font )  # 需要一一对应,就会变成字符串
# # todo 没显示中文
# # todo matplotlib默认不支持中文字符
# # fc-list查看系统所有字体 fc-list :lang=zh  查看支持的中文
# # 1.通过matplotlib.rc来设置
# # 2.通过font_manager解决
#
#
#
# # y轴一样        最小值   最大值 就能取到区间
# plt.yticks(range(min(y),max(y)+1))


# 绘制网格,并且它的颜色不能太深,用alpha
plt.grid(alpha=0.1)


#
# #添加描述信息
plt.xlabel('年龄',fontproperties=my_font)
plt.ylabel('女朋友个数',fontproperties=my_font)
plt.title('11-30岁每年交女朋友的次数',fontproperties=my_font)


# 保存
# plt.savefig('./t1.png')

# 展示图形
plt.show()
